最近話題のGemmaですが、WSL2を使ってテストしてみます。

HuggingFaceからダウンロードして実行

認証が入ります。Hugging FaceのModel cardのページの最上段に、認証のためのリンクがあるので、それを開いて書いている通りに進めればオッケー。

UbuntuのコンソールからPythonのサンプルプログラムを動かせば、とりあえず実行できます。

https://huggingface.co/blog/gemma から、以下のソースコードを実行してみました。

from transformers import AutoTokenizer, pipeline
import torch

model = "google/gemma-7b-it"

tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = pipeline(
    "text-generation",
    model=model,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="cuda",
)

messages = [
    {"role": "user", "content": "Who are you? Please, answer in pirate-speak."},
]
prompt = pipeline.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = pipeline(
    prompt,
    max_new_tokens=256,
    do_sample=True,
    temperature=0.7,
    top_k=50,
    top_p=0.95
)
print(outputs[0]["generated_text"][len(prompt):])

実行結果

実際にはJupyter labを使ったので、出力は画像で撮りました。

“Who are you? Please, answer in pirate-speak.”という質問に対して、”Avast, me hearty, I be a swablin’ digital pirate, ready to pillage the high seas of the digital world.”が回答になります。

“Avast”というのは海賊や船乗りの言葉で、「待て」「止まれ」という掛け声だそうです。面白いですね。

日本語にしてみたところ、

“あなたは誰ですか。海賊風に答えて” に対して、”私は海賊のフランキーです。海を渡って来たエースです。どんな冒険を繰り上げても、僕は冒険を続けるでしょう!”という回答でした。日本語だとあんまり面白くない感じがします。

とりあえず動かしてみましたが、UIを付けてChatGPT風にしてみようと思います。